    /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.corespring.restaurant.web.controller;

import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.corespring.restaurant.model.Ingrediente;
import org.corespring.restaurant.model.Unidad;
import org.corespring.restaurant.model.Usuario;
import org.corespring.restaurant.service.IngredienteManager;
import org.corespring.restaurant.service.ReporteManager;
import org.corespring.restaurant.service.UsuarioManager;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;

/**
 *
 * @author Aldo
 */
@Controller
public class IngredienteController {

    IngredienteManager ingredienteManager;
    UsuarioManager usuarioManager;
    ReporteManager reporterManager;

    @Autowired
    public IngredienteController(IngredienteManager oIngredienteManager, UsuarioManager oUsuarioManager, ReporteManager oReporteManager) {
        this.ingredienteManager = oIngredienteManager;
        this.usuarioManager = oUsuarioManager;
        this.reporterManager = oReporteManager;
    }

    @RequestMapping("/adm_ingredientes1.htm")
    public void adm_ingredientes1(Model model, @ModelAttribute("Ingrediente") Ingrediente ingrediente) {
        List<Ingrediente> ingredientes = ingredienteManager.obtenerIngredientes();
        model.addAttribute("ingredientes", ingredientes);
        model.addAttribute("ingrediente", ingrediente);
    }

    @RequestMapping("/adm_ingredientes.htm")
    public void adm_ingredientes2(Model model, @ModelAttribute("Ingrediente") Ingrediente ingrediente) {
        List<Ingrediente> ingredientes = ingredienteManager.obtenerIngredientes(ingrediente);
        model.addAttribute("ingredientes", ingredientes);
        model.addAttribute("ingrediente", ingrediente);
    }

    @RequestMapping(value = "/adm_registroIngrediente.htm", method = RequestMethod.GET)
    public 
    @ModelAttribute("ingrediente")
    Ingrediente obtenerIngrediente(
            @RequestParam(value = "iding", required = false) String idIng, HttpServletRequest request) {
        if (idIng == null) {
            return new Ingrediente();
        }
        if (!(idIng.isEmpty() || idIng.equals(""))) {
            Ingrediente ingrediente = ingredienteManager.obtenerIngrediente(idIng);
            if (ingrediente == null) {
                return new Ingrediente();
            }
            return ingrediente;
        }
        return new Ingrediente();
    }

    @RequestMapping(value = "/adm_registroIngrediente.htm", method = RequestMethod.POST)
    public String guardarIngrediente(@ModelAttribute("ingrediente") Ingrediente ingrediente,
            BindingResult result, SessionStatus status) {
        Date fecha = new Date();
        String hora = fecha.getHours() + ":" + fecha.getMinutes() + ":" + fecha.getSeconds();
        Usuario usu = usuarioManager.obtenerUsuarioById("admin");

        ingrediente.setFreg(fecha);
        ingrediente.setHreg(hora);
        ingrediente.setUsuario(usu);

        ingredienteManager.grabarIngrediente(ingrediente);
        return "redirect:adm_ingredientes.htm";
    }

    @ModelAttribute("unidad")
    public List<Unidad> listarUnidades() {

        List<Unidad> unidades = ingredienteManager.obtenerUnidades();
        return unidades;
    }

    @RequestMapping("/adm_eliminarIngrediente.htm")
    public String eliminarIngrediente(
            @RequestParam(value = "iding", required = false) String iding) {
        ingredienteManager.eliminarIngrediente(iding);
        return "redirect:adm_ingredientes.htm";
    }

    @RequestMapping("/exportarListaIngredientesReporte.htm")
    public void exportarListaIngredientesReporte(HttpServletResponse response) throws Exception
	{
		OutputStream out = response.getOutputStream();
		HSSFWorkbook dataWorkbook = null;

		try {
			dataWorkbook = reporterManager.obtenerListaIngredientesReporte();
			response.setContentType("application/vnd.ms-excel");
			response.setHeader("Content-Disposition","attachment; filename=\""+ "IngredientesReporte.xls" + "\"");

		 }
		 catch (Exception e)
		 {
			System.out.println("El siguiente error ocurrio: "+e.getMessage());
		 }
		 finally
		 {
			 dataWorkbook.write(out);
			 out.close();
		 }
	}
}
